using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class InputControl : MonoBehaviour
{
    public static InputControl input; // 静态实例，用于访问全局输入控制
    private void Awake() {
        // 在Awake阶段将静态实例设为当前对象，确保输入控制可以被全局访问
        input = this;
    }

    private void Start() {
        // 启动时可以选择锁定鼠标，原注释为“先一个UI再锁鼠标”
        // LockMouse(); // 锁定鼠标（注释掉，暂时不执行）
    }

    // 静态方法，锁定鼠标光标
    public static void LockMouse() {
        Cursor.lockState = CursorLockMode.Locked; // 锁定鼠标光标在屏幕中央
    }

    // 静态方法，解锁鼠标光标
    public static void UnLockMouse() {
        Cursor.lockState = CursorLockMode.None; // 解锁鼠标光标，使其可以自由移动
    }

    // 每帧更新一次，用于处理各种输入
    void Update() {
        MoveInput(); // 调用移动输入处理
        JumpInput(); // 调用跳跃输入处理
        MouseInput(); // 调用鼠标输入处理
    }

    public float Horizontal; // 虚拟轴Horizontal（水平轴）的输入值
    public float Vertical;   // 虚拟轴Vertical（垂直轴）的输入值

    // 移动输入处理
    private void MoveInput() {
        // 如果角色移动功能被启用（CharacterParam.param.moveEnabled为true）
        if (CharacterParam.param.moveEnabled == true) {
            // 从系统输入中获取水平和垂直轴的值
            Horizontal = Input.GetAxis("Horizontal");
            Vertical = Input.GetAxis("Vertical");
        }
        else {
            // 如果移动功能被禁用，设置输入为0
            Horizontal = 0;
            Vertical = 0;
        }
    }

    public float MouseX; // 鼠标水平位移的输入值
    public float MouseY; // 鼠标垂直位移的输入值

    // 鼠标输入处理
    private void MouseInput() {
        // 如果鼠标输入功能被启用（CharacterParam.param.mouseEnabled为true）
        if (CharacterParam.param.mouseEnabled == true) {
            // 从系统输入中获取鼠标X轴和Y轴的移动量
            MouseX = Input.GetAxis("Mouse X");
            MouseY = Input.GetAxis("Mouse Y");
        }
        else {
            // 如果鼠标输入被禁用，设置输入值为0
            MouseX = 0;
            MouseY = 0;
        }
    }

    public float Jump = 1; // 跳跃的触发值
    public KeyCode JumpKey = KeyCode.Space; // 跳跃键的默认按键设为空格键

    // 跳跃输入处理
    private void JumpInput() {
        // 如果跳跃功能被启用，并且按下了跳跃键
        if (CharacterParam.param.jumpEnabled == true && Input.GetKey(JumpKey)) {
            Jump = 1; // 触发跳跃
        }
        else {
            // 否则将跳跃触发值设为0，表示未跳跃
            Jump = 0;
        }
    }

    public KeyCode EnterPlotKey = KeyCode.F; // 进入剧情的按键，默认设为F键
}
